/**
 * @addtogroup crc32.h
 * crc32.h
 * @{
 */
/**
 * @file         ofc_crc32.h
 * @brief        CRC32相关的函数.
 * @author       Leo
 * @date         2019-9-16
 * @version      1.1
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2019-05-24  <td>1.0                   <td>Leo             <td>创建初始版本
 * <tr><td>2019-9-16   <td>1.1                   <td>Akee            <td>按照新编码规范优化接口,翻译成C语言
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */

#ifndef _OFC_CRC32_H_
#define _OFC_CRC32_H_

#include "ofc_types.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * CRC32计算函数.初始值为0xFFFFFFFF
 * @param src: 待校验数据,参数不能为空
 * @param size: 校验数据的大小,不能为负数
 * @note 此接口获取的非标准的CRC码，取反后等于标准的CRC32码
 * @return 计算的crc结果码
 */
UInt32 OfCalcCrc32(UInt8 *src, Int32 size);

/**
 * CRC32计算函数.初始值由crc输入,结果输出到crc
 * @param src: 待校验数据,参数不能为空
 * @param size: 校验数据的大小,不能为负数
 * @param seed: 种子,计算crc的起始值
 * @note 此接口获取的非标准的CRC码，取反后等于标准的CRC32码
 * @return 计算的crc结果码
 */
UInt32 OfCalcCrc32s(UInt8 *src, Int32 size, UInt32 seed);


#ifdef __cplusplus
}  // extern "C"
#endif
#endif  // _OFC_CRC32_H_

/**
 * @}
 */
